/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modelo;
import java.io.Serializable;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.ArrayList;
import javax.faces.model.SelectItem;

public class Parametro implements Serializable {
    private int numero;
    private String tipoParametro;
    private String codigoParametro;
    private String descripcionParametro;
    private double valorParametro;
    private String estadoRegistro;
     private boolean retorno;

    public Parametro() {
    }

    public boolean isRetorno() {
        return retorno;
    }

    public void setRetorno(boolean retorno) {
        this.retorno = retorno;
    }

    

    public int getNumero() {
        return numero;
    }

    public void setNumero(int numero) {
        this.numero = numero;
    }

    public String getTipoParametro() {
        return tipoParametro;
    }

    public void setTipoParametro(String tipoParametro) {
        this.tipoParametro = tipoParametro;
    }

    public String getCodigoParametro() {
        return codigoParametro;
    }

    public void setCodigoParametro(String codigoParametro) {
        this.codigoParametro = codigoParametro;
    }

    public String getDescripcionParametro() {
        return descripcionParametro;
    }

    public void setDescripcionParametro(String descripcionParametro) {
        this.descripcionParametro = descripcionParametro;
    }

    public double getValorParametro() {
        return valorParametro;
    }

    public void setValorParametro(double valorParametro) {
        this.valorParametro = valorParametro;
    }

    public String getEstadoRegistro() {
        return estadoRegistro;
    }

    public void setEstadoRegistro(String estadoRegistro) {
        this.estadoRegistro = estadoRegistro;
    }
    
    
     //registrar
     public static boolean registrarParametro(Parametro a)
    {
        boolean estado = false ;
        Connection conexion=null;
         try{
             conexion=ControladorBD.darConexionBD();
             CallableStatement st=conexion.prepareCall(" {call sp_registrarParametro "
                     +"(?,?,?,?,?)} ");
             st.setString(1,a.getTipoParametro());
             st.setString(2,a.getCodigoParametro());
             st.setString(3,a.getDescripcionParametro());
             st.setDouble(4,a.getValorParametro());
             st.registerOutParameter(5,java.sql.Types.BOOLEAN);
             st.execute();
             a.setRetorno(st.getBoolean(5));
             if(a.isRetorno()==true)
             {
                 estado=true;
             }
        st.close();
        conexion.close();
             
         } catch(Exception error){
             System.out.println("Error en el metodo por: "+ error.getMessage());
                                 error.printStackTrace();
         }
         
        return estado;  
        
    } 
    /*
     * combo que carga los datos de la tabla parametro, segun el tipo de Parametro
     */
    public ArrayList<SelectItem>getCargarCombosParametro(String tipo){         
    ArrayList<SelectItem> arrayNivel = new ArrayList<SelectItem>();
    Connection conexion = null;
    ResultSet rs = null;
    try{
    conexion = ControladorBD.darConexionBD();
    CallableStatement st = conexion.prepareCall( "{call sp_listarParametroTipo(?)}");
    st.setString(1,tipo);
    rs = st.executeQuery();        
    if (rs.next()){    
      do{
        arrayNivel.add(new SelectItem(rs.getString("descripcionParametro"), 
                rs.getString("descripcionParametro")));              
      } while (rs.next());
    }  
         rs.close();
         st.close();
         conexion.close();

     }catch(Exception error){
        System.out.println("Error en el metodo por: " +
                   error.getMessage());
                error.printStackTrace();
        }    
      
    return arrayNivel;
    } 
     
    //listar todos los parametros
     public static ArrayList<Parametro> getListarParametro(){ 
     ArrayList<Parametro> arreglo = new ArrayList<Parametro>();
    if (arreglo.size()==0){         
        Parametro obj=null;
    Connection conexion = null;
    ResultSet rs = null;
    try{
    conexion = ControladorBD.darConexionBD();
    CallableStatement st = conexion.prepareCall
  ( "{call sp_listarParametro()}");   
    rs = st.executeQuery();        
    if (rs.next()){          
        do{
        obj =new Parametro();
        obj.setTipoParametro(rs.getString("tipoParametro"));
        obj.setCodigoParametro(rs.getString("codigoParametro"));
        obj.setDescripcionParametro(rs.getString("descripcionParametro"));
        obj.setValorParametro(rs.getDouble("valorParametro"));
        obj.setEstadoRegistro(rs.getString("estadoRegistro"));
        arreglo.add(obj);
       } while (rs.next());
    }  
         rs.close();
         st.close();
         conexion.close();

     }catch(Exception error){
        System.out.println("Error en el metodo por: " +
                   error.getMessage());
                error.printStackTrace();
        }    
      }  
    return arreglo;
    }
    
    //actualizar parametro
 public static boolean actualizarParametro(Parametro a){
            boolean estado=false;
            Connection conexion=null;
            try{
               conexion=ControladorBD.darConexionBD();
             CallableStatement st=conexion.prepareCall(" {call sp_actualizarParametro "
                     +"(?,?,?,?,?,?)} ");
             st.setString(1,a.getCodigoParametro());
             st.setString(2,a.getTipoParametro());
             st.setString(3,a.getDescripcionParametro());
             st.setDouble(4,a.getValorParametro());
             st.setString(5,a.getEstadoRegistro());
             st.registerOutParameter(6,java.sql.Types.BOOLEAN);
             st.execute();
             a.setRetorno(st.getBoolean(6));
             if(a.isRetorno())
             {
                 estado=true;
             }
        st.close();
        conexion.close();
            }catch(Exception error){
                    System.out.println("Error en el metodo por: " + error.getMessage());
                    error.printStackTrace();
            }
            
            return estado;
    }
 
    
}
